<?php

/**
 * Login form.
 *
 * @package    form
 * @subpackage carga_lectiva
 * @author     David Joan Tataje Mendoza <davidtataje@gmail.com>
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 6174 2007-11-27 06:22:40Z fabien $
 */

class loginForm extends UsuarioForm
{	  
  protected
    $labels = array
              (
                'login'    => 'Usuario'
              );                
  public function configure()
  {
  	//quitando lo que no se usa para el login
  	unset
  	(
  	  $this['password'], 
      $this['fecha_creacion'], $this['fecha_actualizacion'],
      $this['ultimo_acceso'] , $this['estado']             ,
      $this['perfil_id']     , $this['docente_id'],
      $this['id']            , $this['slug']
    );    
  	
    //configurando los widgets
    $this->widgetSchema['login']    = new sfWidgetFormInput(array(), array('size' => 20));
  	
  	//password
  	/*$validator = $this->validatorSchema['password'];
  	$validator->setMessage('max_length', 'El campo \'Password\' es demasiado largo (%max_length% caracteres como maximo).');
  	$validator->setMessage('min_length', 'El campo \'Password\' es demasiado corto (%min_length% caracteres como minimo).');
  	$validator->setOption('min_length' , 1);
  	$validator->setOption('max_length' , 15);
  	
  	$validator = new sfValidatorAnd
  	             (
  	               array
  	               (
  	                 $validator,
  	                 new sfValidatorRegex
  	                 (
  	                   array('pattern' => '/^[^\n]+$/'),
  	                   array('invalid' => 'El campo \'Password\' tiene caracteres prohibidos.')
  	                 )
  	               ),
  	               
  	               array('required' => $validator->getOption('required'), 'trim' => false),
  	               array('required' => 'El campo \'Password\' no puede tener espacios en blanco.')
  	             );
  	             
    $this->validatorSchema['password'] = $validator;
    $this->validatorSchema['password']->setOption('required', true);*/
    //usuario
    
    $validator = $this->validatorSchema['login'];
  	
  	$validator->setMessage('max_length', 'El campo  \'Usuario\' es demasiado largo (%max_length% caracteres como maximo).');
  	$validator->setMessage('min_length', 'El campo \'Usuario\' es demasiado corto (%min_length% caracteres como minimo).');
  	$validator->setOption('min_length' , 8);
  	$validator->setOption('max_length' , 8);
  	
  	$validator = new sfValidatorAnd
  	             (
  	               array
  	               (
  	                 $validator,
  	                 new sfValidatorRegex
  	                 (
  	                    array('pattern' => '/^[\w.\-_]+$/'),
  	                    array('invalid' => 'El campo \'Usuario\' tiene caracteres prohibidos.')
  	                 )
  	               ),
  	               
  	               array('required' => $validator->getOption('required'), 'trim' => true),
  	               array('required' => 'El campo \'Usuario\' no puede tener espacios en blanco.')
  	             );
  	$this->validatorSchema['login'] = $validator;
  	
  	//seteando el postvalidador para el login
  	$this->validatorSchema->setPostValidator
  	(
  	  new LoginValidator
  	  (
  	    array
  	    (
  	      'model'       => 'Usuario',
  	      //'column'      => array('login', 'password'),
  	      'column'      => array('login'),
  	      'find_method' => 'findOneByLogin',
  	    )
  	  )
  	);    
  	           
  	
  	$this->widgetSchema->setNameFormat('user_login[%s]');
    $this->arreglarLabels();
    $this->widgetSchema->setLabels($this->labels);
  }
  
  public function arreglarLabels()
  {
    $labels = array();
    $validatorSchema = $this->getValidatorSchema();
    foreach ($this->labels as $field => $label)
    {
      $label = rtrim($label, '*');
      if (isset($validatorSchema[$field]))
      {
        $labels[$field] = $validatorSchema[$field]->getOption('required') ? $label.' (*)' : $label;
      }
      else
      {
        $labels[$field] = $label;
      }
    }
  }
}